package com.atguigu.gmall;

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.ImportResource;

/**
 * springboot整合dubbo步骤：
 *  1.导入依赖：
 *      （1）导入dubbo-starter
 *      （2）导入dubbo其他依赖
 */

/**
 *  1.导入dubbo-starter。在application.properties配置属性，使用@Service【暴露服务】，使用@Reference【引用服务】
 *  2.保留Dubbo 相关的xml配置文件，导入dubbo-starter，使用@ImportResource导入Dubbo的xml配置文件
 *  3.使用 注解API的方式：将每一个组件手动配置到容器中,让dubbo来扫描其他的组件,需要使用@Service开启暴露服务
 */
@EnableDubbo(scanBasePackages = "com.atguigu.gmall")   //开启dubbo功能
//@ImportResource(locations = "classpath:provider.xml")   //使用这种方法需要把application.properties中得配置注释掉，且不能与@EnableDubbo同时使用
//@DubboComponentScan(basePackages ="com.atguigu.gmall")    //相当于使用@EnableDubbo(scanBasePackages = "com.atguigu.gmall")
@EnableHystrix  //开启服务容错框架Hystrix
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
